home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / Peter Lewis / PNL Libraries / MyTrackTextItems.p < prev    next >
Encoding:
Text File  |  1994-08-21  |  1.8 KB  |  76 lines  |  [TEXT/PJMM]

  1. unit MyTrackTextItems;
  2.  
  3. interface
  4.  
  5.     procedure TrackTextItemsCreate (dialog: DialogPtr; var data: univ handle);
  6.     procedure TrackTextItemsDestroy (var data: univ handle);
  7.     procedure TrackTextItems (data: univ handle; dialog: DialogPtr);
  8.     function AnyTextItemHasChanged (data: univ handle; dialog: DialogPtr): boolean;
  9.     function TextItemHasChanged (data: univ handle; dialog: DialogPtr; item: integer): boolean;
  10.     function TextItemWas (data: univ handle; item: integer): str255;
  11.  
  12. implementation
  13.  
  14.     uses
  15.         MyStrh, MyDialogs;
  16.  
  17.     procedure TrackTextItemsCreate (dialog: DialogPtr; var data: univ handle);
  18.     begin
  19.         data := NewStrH;
  20.         TrackTextItems(data, dialog);
  21.     end;
  22.  
  23.     procedure TrackTextItemsDestroy (var data: univ handle);
  24.     begin
  25.         DisposeHandle(data);
  26.     end;
  27.  
  28.     procedure SafeGetItemText (dialog: DialogPtr; item: integer; var s: str255);
  29.         var
  30.             k: integer;
  31.     begin
  32.         s := '';
  33.         GetDItemKind(dialog, item, k);
  34.         if k in [editText, statText] then begin
  35.             GetItemText(dialog, item, s);
  36.         end;
  37.     end;
  38.  
  39.     procedure TrackTextItems (data: univ handle; dialog: DialogPtr);
  40.         var
  41.             i: integer;
  42.             s: str255;
  43.     begin
  44.         for i := 1 to CountDItems(dialog) do begin
  45.             SafeGetItemText(dialog, i, s);
  46.             SetIndStrH(data, i, s);
  47.         end;
  48.     end;
  49.  
  50.     function TextItemWas (data: univ handle; item: integer): str255;
  51.     begin
  52.         TextItemWas := GetIndStrH(data, item);
  53.     end;
  54.  
  55.     function TextItemHasChanged (data: univ handle; dialog: DialogPtr; item: integer): boolean;
  56.         var
  57.             s: str255;
  58.     begin
  59.         SafeGetItemText(dialog, item, s);
  60.         TextItemHasChanged := s <> TextItemWas(data, item);
  61.     end;
  62.  
  63.     function AnyTextItemHasChanged (data: univ handle; dialog: DialogPtr): boolean;
  64.         var
  65.             i: integer;
  66.     begin
  67.         AnyTextItemHasChanged := false;
  68.         for i := 1 to CountDItems(dialog) do begin
  69.             if TextItemHasChanged(data, dialog, i) then begin
  70.                 AnyTextItemHasChanged := true;
  71.                 leave;
  72.             end;
  73.         end;
  74.     end;
  75.  
  76. end.